import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_api/widgets/title_text_container.dart';

// 文本
class TextPage extends StatefulWidget {
  @override
  _TextPageState createState() => _TextPageState();
}

class _TextPageState extends State<TextPage> {
  @override
  Widget build(BuildContext context) {
    return ListView(
      padding: EdgeInsets.all(12.0),
      children: [
        TitleTextContainer('文本基本属性', child: TextWidget()),
        TitleTextContainer('富文本', child: RichTextWidget()),
        TitleTextContainer('文本默认样式', child: DefStyleTextWidget()),
      ],
    );
  }
}

// 1.文本控件基本使用
class TextWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text(
      '基本文本使用' * 10,
      // 最大显示行数
      maxLines: 2,
      textAlign: TextAlign.center,
      overflow: TextOverflow.ellipsis,
      // 文本放大倍数
      textScaleFactor: 2,
      style: TextStyle(
        color: Colors.red,
        fontWeight: FontWeight.bold,
        fontSize: 12,
        // 装饰线：下划线
        decoration: TextDecoration.underline,
        background: Paint()..color = Colors.greenAccent, // 背景色
      ),
    );
  }
}

// 2.富文本
class RichTextWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text.rich(TextSpan(children: [
      TextSpan(
          text: '富文本',
          style: TextStyle(fontSize: 18.0, color: Colors.pink),
          // 单独设置点击事件
          recognizer: TapGestureRecognizer()
            ..onTap = () {
              ScaffoldMessenger.of(context)
                  .showSnackBar(SnackBar(content: Text('富文本')));
            }),

      // 富文本图标
      WidgetSpan(
          child: Icon(
        Icons.psychology_outlined,
        color: Colors.red,
      )),
      TextSpan(
          text: 'world',
          style: TextStyle(fontSize: 18.0, color: Colors.blue),
          // 单独设置点击事件
          recognizer: TapGestureRecognizer()
            ..onTap = () {
              ScaffoldMessenger.of(context)
                  .showSnackBar(SnackBar(content: Text('Hello Flutter')));
            }),
    ]));
  }
}

// 3.默认样式继承
class DefStyleTextWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DefaultTextStyle(
      // 定义默认样式,所有child统一使用该主题，也可以默认覆盖
      style: TextStyle(fontSize: 14, color: Colors.cyanAccent),
      child: Column(
        children: [
          Text('默认样式：完全继承默认样式'),
          Text(
            '完全不继承默认样式,自己定义',
            style: TextStyle(inherit: false, color: Colors.grey),
          ),
          Text(
            '除颜色自定义外，其余属性继承默认样式',
            style: TextStyle(color: Colors.orange),
          )
        ],
      ),
    );
  }
}
